/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

JDCLOUD流计算API
提供流计算操作的相关接口。

OpenAPI spec version: v1
Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/


#ifndef StreamcomputerClient_h
#define StreamcomputerClient_h


#import <JDCloudOCSDKCore/JDCloudOCSDKCore.h>
#import <JDCloudOCSDKStreamcomputer/StreamcomputerApiModel.h>

@interface StreamcomputerClient : NSObject<JDCloudClient>{
    @private
    NSString* _userAgent;
    NSString* _serviceName;
    NSString* _version;
    }

    @property (strong,readonly,nonatomic) NSString* userAgent;

    @property (strong,readonly,nonatomic) NSString* serviceName;

    @property (strong,readonly,nonatomic) NSString* version;

    @property (strong,nonatomic) NSString* contentType;

    @property (strong,nonatomic) Credential* credential;

    @property (strong,nonatomic) SDKEnvironment* sdkEnvironment;

    @property (strong,nonatomic) NSMutableDictionary* customHeader;

    @property  (strong,nonatomic) NSString* httpRequestProtocol;

    -(void) addCustomerHeaderWithKey:(NSString*) key
    value:(NSString*) value;

    -(id)initWithGlobalConfig;

    -(id)initWithCredential:(Credential*)credential
    sdkEnvironment:(SDKEnvironment*)sdkEnvironment;
    -(id)initWithCredential:(Credential*)credential;
    /**
    queryNamespaceDetail sync request
    @param queryNamespaceDetailRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `queryNamespaceDetailResponse` the request response data model
    */
    -(NSDictionary*) queryNamespaceDetailSyncWithRequest:(StreamcomputerQueryNamespaceDetailRequest*) queryNamespaceDetailRequest;

    -(void)queryNamespaceDetailAsyncWithRequest:(StreamcomputerQueryNamespaceDetailRequest*) queryNamespaceDetailRequest
    completionHandler:(void(^)(int statusCode,StreamcomputerQueryNamespaceDetailResponse* _Nullable queryNamespaceDetailResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeJob sync request
    @param describeJobRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeJobResponse` the request response data model
    */
    -(NSDictionary*) describeJobSyncWithRequest:(StreamcomputerDescribeJobRequest*) describeJobRequest;

    -(void)describeJobAsyncWithRequest:(StreamcomputerDescribeJobRequest*) describeJobRequest
    completionHandler:(void(^)(int statusCode,StreamcomputerDescribeJobResponse* _Nullable describeJobResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeStorage sync request
    @param describeStorageRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeStorageResponse` the request response data model
    */
    -(NSDictionary*) describeStorageSyncWithRequest:(StreamcomputerDescribeStorageRequest*) describeStorageRequest;

    -(void)describeStorageAsyncWithRequest:(StreamcomputerDescribeStorageRequest*) describeStorageRequest
    completionHandler:(void(^)(int statusCode,StreamcomputerDescribeStorageResponse* _Nullable describeStorageResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteJob sync request
    @param deleteJobRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteJobResponse` the request response data model
    */
    -(NSDictionary*) deleteJobSyncWithRequest:(StreamcomputerDeleteJobRequest*) deleteJobRequest;

    -(void)deleteJobAsyncWithRequest:(StreamcomputerDeleteJobRequest*) deleteJobRequest
    completionHandler:(void(^)(int statusCode,StreamcomputerDeleteJobResponse* _Nullable deleteJobResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    addOrUpdateJob sync request
    @param addOrUpdateJobRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `addOrUpdateJobResponse` the request response data model
    */
    -(NSDictionary*) addOrUpdateJobSyncWithRequest:(StreamcomputerAddOrUpdateJobRequest*) addOrUpdateJobRequest;

    -(void)addOrUpdateJobAsyncWithRequest:(StreamcomputerAddOrUpdateJobRequest*) addOrUpdateJobRequest
    completionHandler:(void(^)(int statusCode,StreamcomputerAddOrUpdateJobResponse* _Nullable addOrUpdateJobResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    queryNamespaces sync request
    @param queryNamespacesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `queryNamespacesResponse` the request response data model
    */
    -(NSDictionary*) queryNamespacesSyncWithRequest:(StreamcomputerQueryNamespacesRequest*) queryNamespacesRequest;

    -(void)queryNamespacesAsyncWithRequest:(StreamcomputerQueryNamespacesRequest*) queryNamespacesRequest
    completionHandler:(void(^)(int statusCode,StreamcomputerQueryNamespacesResponse* _Nullable queryNamespacesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    startJob sync request
    @param startJobRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `startJobResponse` the request response data model
    */
    -(NSDictionary*) startJobSyncWithRequest:(StreamcomputerStartJobRequest*) startJobRequest;

    -(void)startJobAsyncWithRequest:(StreamcomputerStartJobRequest*) startJobRequest
    completionHandler:(void(^)(int statusCode,StreamcomputerStartJobResponse* _Nullable startJobResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    addOrUpdateStorage sync request
    @param addOrUpdateStorageRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `addOrUpdateStorageResponse` the request response data model
    */
    -(NSDictionary*) addOrUpdateStorageSyncWithRequest:(StreamcomputerAddOrUpdateStorageRequest*) addOrUpdateStorageRequest;

    -(void)addOrUpdateStorageAsyncWithRequest:(StreamcomputerAddOrUpdateStorageRequest*) addOrUpdateStorageRequest
    completionHandler:(void(^)(int statusCode,StreamcomputerAddOrUpdateStorageResponse* _Nullable addOrUpdateStorageResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getJobList sync request
    @param getJobListRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getJobListResponse` the request response data model
    */
    -(NSDictionary*) getJobListSyncWithRequest:(StreamcomputerGetJobListRequest*) getJobListRequest;

    -(void)getJobListAsyncWithRequest:(StreamcomputerGetJobListRequest*) getJobListRequest
    completionHandler:(void(^)(int statusCode,StreamcomputerGetJobListResponse* _Nullable getJobListResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteNamespace sync request
    @param deleteNamespaceRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteNamespaceResponse` the request response data model
    */
    -(NSDictionary*) deleteNamespaceSyncWithRequest:(StreamcomputerDeleteNamespaceRequest*) deleteNamespaceRequest;

    -(void)deleteNamespaceAsyncWithRequest:(StreamcomputerDeleteNamespaceRequest*) deleteNamespaceRequest
    completionHandler:(void(^)(int statusCode,StreamcomputerDeleteNamespaceResponse* _Nullable deleteNamespaceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    stopJob sync request
    @param stopJobRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `stopJobResponse` the request response data model
    */
    -(NSDictionary*) stopJobSyncWithRequest:(StreamcomputerStopJobRequest*) stopJobRequest;

    -(void)stopJobAsyncWithRequest:(StreamcomputerStopJobRequest*) stopJobRequest
    completionHandler:(void(^)(int statusCode,StreamcomputerStopJobResponse* _Nullable stopJobResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createNamespace sync request
    @param createNamespaceRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createNamespaceResponse` the request response data model
    */
    -(NSDictionary*) createNamespaceSyncWithRequest:(StreamcomputerCreateNamespaceRequest*) createNamespaceRequest;

    -(void)createNamespaceAsyncWithRequest:(StreamcomputerCreateNamespaceRequest*) createNamespaceRequest
    completionHandler:(void(^)(int statusCode,StreamcomputerCreateNamespaceResponse* _Nullable createNamespaceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getStorageList sync request
    @param getStorageListRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getStorageListResponse` the request response data model
    */
    -(NSDictionary*) getStorageListSyncWithRequest:(StreamcomputerGetStorageListRequest*) getStorageListRequest;

    -(void)getStorageListAsyncWithRequest:(StreamcomputerGetStorageListRequest*) getStorageListRequest
    completionHandler:(void(^)(int statusCode,StreamcomputerGetStorageListResponse* _Nullable getStorageListResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    updateNamespace sync request
    @param updateNamespaceRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `updateNamespaceResponse` the request response data model
    */
    -(NSDictionary*) updateNamespaceSyncWithRequest:(StreamcomputerUpdateNamespaceRequest*) updateNamespaceRequest;

    -(void)updateNamespaceAsyncWithRequest:(StreamcomputerUpdateNamespaceRequest*) updateNamespaceRequest
    completionHandler:(void(^)(int statusCode,StreamcomputerUpdateNamespaceResponse* _Nullable updateNamespaceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteStorage sync request
    @param deleteStorageRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteStorageResponse` the request response data model
    */
    -(NSDictionary*) deleteStorageSyncWithRequest:(StreamcomputerDeleteStorageRequest*) deleteStorageRequest;

    -(void)deleteStorageAsyncWithRequest:(StreamcomputerDeleteStorageRequest*) deleteStorageRequest
    completionHandler:(void(^)(int statusCode,StreamcomputerDeleteStorageResponse* _Nullable deleteStorageResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    /**
    streamcomputer common sync request
    @param  jdcloudDataRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
    */
    -(NSDictionary*) streamcomputerCommonSyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                           url:(NSString*) url
                                        method:(NSString*) method;

    -(void)streamcomputerCommonAsyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                  url:(NSString*) url
                               method:(NSString*) method
                    completionHandler:(void(^)(int statusCode, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    @end


    #endif /* StreamcomputerClient_h */
